﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.DAL;
using Gustozzi.BL;
namespace WebGustozzi.ModuloVentas
{
    public partial class wfAgregarPrecioProducto : System.Web.UI.Page
    {
        VentasDataEntities contexto = new VentasDataEntities();
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (contexto == null)
                    {
                        contexto = new VentasDataEntities();
                    }
                    string codProducto = Request.QueryString["cPrecioProd"];
                    
                    string codTipoCliente = Request.QueryString["cTCli"];

                    var listadoTipoCliente = from p in contexto.TiposCliente
                                             select new
                                             {
                                                 Codigo = p.codigoTipoCliente,
                                                 Nombre = p.descripcion
                                             };
                    ddlTipoCliente.DataSource = listadoTipoCliente;
                    ddlTipoCliente.DataTextField = "Nombre";
                    ddlTipoCliente.DataValueField = "Codigo";
                    ddlTipoCliente.DataBind();

                    if (!codProducto.Equals("0"))
                    {
                        txtCodigoProducto.Text = codProducto;
                        CargarDatos();
                        int idProducto = Convert.ToInt32(codProducto);
                        int idTipoProducto = Convert.ToInt32(codTipoCliente);
                        var oPrecio = from p in contexto.ListasPrecios
                                      where p.codigoProducto == idProducto &&
                                      p.codigoTipoCliente == idTipoProducto
                                      select p;
                        if (oPrecio.Count() > 0)
                        {
                            txtPrecio.Text = oPrecio.First().precioVenta.ToString();
                        }

                    }
                    ddlTipoCliente.SelectedValue = codTipoCliente;
                }
            }
            catch (Exception)
            {
                
                throw;
            }
        }

       
        public void CargarDatos() 
        {
            if (!txtCodigoProducto.Text.Trim().Equals(string.Empty)) 
            {
                if (contexto == null)
                {
                    contexto = new VentasDataEntities();
                }
                int idProducto = Convert.ToInt32(txtCodigoProducto.Text);

                var producto = from o in contexto.Productos
                               where o.codigoProducto == idProducto
                               select o;

                if (producto.Count() > 0)
                {
                    txtNombreProducto.Text = producto.First().descripcion;
                }
                else
                {
                    txtNombreProducto.Text = string.Empty;
                }
            }
            

        }

        protected void txtCodigoProducto_TextChanged(object sender, EventArgs e)
        {
            try
            {
                CargarDatos();
            }
            catch (Exception)
            {

                throw;
            }
        }

        protected void imbGuardar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Guardar();
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public void Guardar() 
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if (txtCodigoProducto.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese codigo de producto");
            }
            if (ddlTipoCliente.SelectedIndex <= 0) 
            {
                throw new Exception("Seleccione tipo de cliente");
            }
            if (txtPrecio.Text.Trim().Equals(string.Empty)) 
            {
                throw new Exception("Ingrese precio");
            }
            int idProducto=Convert.ToInt32(txtCodigoProducto.Text.Trim());
            int idTipoCliente=Convert.ToInt32(ddlTipoCliente.SelectedValue);

            var lstListaPrecios= from p in contexto.ListasPrecios
                               where p.codigoProducto ==idProducto &&
                               p.codigoTipoCliente== idTipoCliente 
                               select p;

            ListaPrecios oListadoPrecios = null;
            if (lstListaPrecios.Count() > 0)
            {
                oListadoPrecios = lstListaPrecios.First();
            }
            else 
            {
                oListadoPrecios = new ListaPrecios();
                contexto.AddToListasPrecios(oListadoPrecios);
                oListadoPrecios.codigoProducto = idProducto;
                oListadoPrecios.codigoTipoCliente = idTipoCliente;
            }
            oListadoPrecios.precioVenta = Convert.ToDouble(txtPrecio.Text.Trim());
            oListadoPrecios.fechaUltActualiza = DateTime.Now;

            ProductoBL oProductoBL = new ProductoBL();
           int rpt= oProductoBL.ActualizaListaPrecios(oListadoPrecios, contexto);
           if (rpt > 0)
           {
               //mostrar satisfactorio
           }
           else 
           {
               //mostrar error
           }
        }
    }
}